#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
void Work(int number){
    int cnt = 5;
    while(cnt--){
        printf("我是子进程 pid:%d ppid: %d cnt: %d number:%d\n",getpid(),getppid(),cnt,number);
        sleep(5);
    }
   // int* p = NULL;
   // *p = 100;
   //double a = 10/0;
}
const int N = 10;

//int main() 
//{
//    for(int i = 0;i < N;i++)
//    {
//        pid_t id = fork();
//        if(id == 0)
//        {
//            Work(i);
//            exit(i);
//        }
//    }
//
//    for(int i = 0;i < N;i++)
//    {
//        int status = 0;
//        pid_t rid = waitpid(-1,&status,0);
//        if(WIFEXITED(status) && rid > 0)
//        {
//           // printf("waitpid success rid:%d exit code: %d\n",rid,WEXITSTATUS(status));
//           printf("chind process exit success exit code : %d \n",WEXITSTATUS(status));
//        }   
//        else
//        {
//            printf("exit fail exit sig : %d\n",status & 0x7f);
//            return 1;
//        }
//    }
//    return 0;
//}

//int main() {
//    pid_t id = fork();
//    if(id == 0){
//        Work(0);
//        exit(2);
//    }
//    else if(id > 0){
//        printf("wait begin!\n");
//        int status = 0;
//        pid_t rid = wait(&status);
//        printf("wait end !\n");
//        if(rid == id)
//        {
//            printf("wait success! pid: %d rid:%d exit code:%d exit sig: %d\n",id,rid,(status>>8)&0xff,status&0x7f);
//        }
//    }
//    return 0;
//}
//

int func()
{
    printf("呵呵呵\n");
   // return 10;
   exit(10);
}

int main() 
{
    printf("I am process");
    sleep(5);
    exit(1); //会刷新缓冲区以后在退出
   // _exit(1); //直接进程退出
   func();
   return 0;
}
